﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Common;
using Datalayer;
using Entities;
using DevExpress.XtraEditors.Controls;
namespace QLHoNgheo
{
    public partial class frm_NguoiCC : Form
    {
        DataTable dt;
        IQueryMgr iq;
        string MaNguoiCoCong = null;
        int IDThanhVien;
        bool _NewNCC = false;
        bool _NewThannhan = false;
        public frm_NguoiCC()
        {
            InitializeComponent();
            
        }
        
        private void frm_NguoiCC_Load(object sender, EventArgs e)
        {
            load_lk();
            load_grv(MaNguoiCoCong);
            xtraTab_search.PageVisible = true;
        }

        #region Tab Search
        private void lk_quan_EditValueChanged(object sender, EventArgs e)
        {
            int id = 0;
            try
            {
                id = int.Parse(lk_quan.EditValue.ToString());
            }
            catch { }
            iq = QueryMgr.GetDbInstance();
            List<NguoiCoCong> ls = iq.NCC_GetNguoiCoCongByQuanID(id);
            cl_Lookupedit.lucb_PhuongXa(ref lk_phuong, id);
            gridControl1.DataSource = Cl_Convert.ToDataTable(ls);

        }

        private void lk_phuong_EditValueChanged(object sender, EventArgs e)
        {
            iq = QueryMgr.GetDbInstance();
            int id = int.Parse(lk_phuong.EditValue.ToString());
            List<NguoiCoCong> ls = iq.NCC_GetNguoiCoCongByPhuongID(id);
            gridControl1.DataSource = Cl_Convert.ToDataTable(ls);
        }

        private void bt_new_NguoiCoCong_Click(object sender, EventArgs e)
        {
            DevExpress.Utils.WaitDialogForm wd;
            wd = new DevExpress.Utils.WaitDialogForm("Vui lòng chờ trong giây lát.....", "Đang nạp dữ liệu");
            txt_ma.Text = "";
            txt_Hoten.Text = "";
            txt_namsinh.Text = "";
            lk_mdd.EditValue = null;
            lk1_quan.EditValue = null;
            lk1_phuong.EditValue = null;
            txt2_diachi.Text = "";
            list_gioitinh.SelectedIndex = 0;
            _NewNCC = true;
            //neededit
            MaNguoiCoCong = null;
            xtraTab_detail.PageVisible = true;
            xtraTab_search.PageVisible = false;
            load_tab_deail();
            xulybutton();
            wd.Close();
        }

        private void gridView1_DoubleClick(object sender, EventArgs e)
        {
            DataRow r;
            DevExpress.Utils.WaitDialogForm wd;
            wd = new DevExpress.Utils.WaitDialogForm("Vui lòng chờ trong giây lát.....", "Đang nạp dữ liệu");
            r = gridView1.GetDataRow(gridView1.FocusedRowHandle);
            if (r != null)
            {
                //neededit
                string _ID = r["Ma_NguoiCoCong"].ToString();
                MaNguoiCoCong = _ID;
                xtraTab_detail.PageVisible = true;
                xtraTab_search.PageVisible = false;
                load_tab_deail();
            }
            wd.Close();
        }

        void load_lk()
        {
            cl_Lookupedit.Lucb_Quanhuyen(ref lk_quan);
            cl_Lookupedit.Lucb_Quanhuyen(ref lk2_quan);
        }
        #endregion

        #region Người có công
        void xulybutton()
        {
            if (_NewNCC == true)
            {
                txt_ma.Enabled = true;
                bt_del.Enabled = false;
                //
                bt1_xoa.Enabled = false;
                bt1_them.Enabled = false;
                bt1_saveall.Enabled = false;
            }
            else
            {
                bt_del.Enabled = true;
                txt_ma.Enabled = false;
                //
                bt1_xoa.Enabled = true;
                bt1_them.Enabled = true;
                bt1_saveall.Enabled = true;
                XulyButton1();
            }
        }

        void XulyButton1()
        {
            if (_NewThannhan == true)
            {
                bt1_xoa.Enabled = false;
                bt1_them.Enabled = false;
            }
            else
            {
                bt1_xoa.Enabled = true;
                bt1_them.Enabled = true;
            }
        }

        private void lk1_quan_EditValueChanged(object sender, EventArgs e)
        {
            try
            {
                int id = int.Parse(lk1_quan.EditValue.ToString());
                cl_Lookupedit.lucb_PhuongXa(ref lk1_phuong, id);
            }
            catch { }
        }

        private void lk_mdd_EditValueChanged(object sender, EventArgs e)
        {
            try
            {
                int id = int.Parse(lk_mdd.EditValue.ToString());
                cl_Lookupedit.lucb_DoiTuongCoCong(ref lk_ncc, id);
            }
            catch { }
        }

        private void bt_save_Click(object sender, EventArgs e)
        {
            bool ok = true;
            iq = QueryMgr.GetDbInstance();
            NguoiCoCong hn = new NguoiCoCong();
            cl_Lookupedit.BatLoi(txt_ma, "Chưa nhập Mã NCC", ref ok);
            cl_Lookupedit.BatLoi(txt_namsinh, "Chưa nhập năm sinh", ref ok);
            cl_Lookupedit.BatLoi(lk1_phuong, "Chưa chọn phường", ref ok);
            cl_Lookupedit.BatLoi(txt_Hoten, "Chưa Nhập họ tên", ref ok);
            cl_Lookupedit.BatLoi(lk_ncc, "Chưa chọn đối tượng có công", ref ok);
            cl_Lookupedit.BatLoi(txt_diachi, "chưa nhập địa chỉ", ref ok);

            // kiểm tra có lỗi hay ko
            if (ok == true)
            {
                hn.IsDeleted = false;
                if (list_gioitinh.SelectedIndex == 0)
                    hn.GioiTinh = true;
                else
                    hn.GioiTinh = false;

                hn.Ma_Phuong = int.Parse(lk1_phuong.EditValue.ToString());
                hn.Ma_DoiTuongCoCong = int.Parse(lk_ncc.EditValue.ToString());
                hn.NamSinh = int.Parse(txt_namsinh.EditValue.ToString());
                hn.DiaChiChiTiet = txt_diachi.Text;
                hn.Ten_NguoiCoCong = txt_Hoten.Text;
                hn.Ma_NguoiCoCong = txt_ma.Text;

                if (_NewNCC == true)//new
                {
                    if (iq.NCC_GetNguoiCoCongByID(hn.Ma_NguoiCoCong) == null)
                    {
                        iq.Ncc_NewNguoiCoCong(hn);
                        MessageBox.Show("Thêm hộ nghèo mới thành công !");
                        _NewNCC = false;
                        bt1_them_Click(sender, e);
                    }
                    else
                    {
                        MessageBox.Show("Lỗi: Đã tồn tại Mã NCC !");
                    }
                }
                else // edit
                {
                    iq.Ncc_EditNguoiCoCong(hn);
                    MessageBox.Show("Sửa thông tin hộ nghèo thành công !");
                }
                xulybutton();
            }
        }

        private void bt_cancel_Click(object sender, EventArgs e)
        {
            xtraTab_detail.PageVisible = false;
            xtraTab_search.PageVisible = true;
            lk_quan.EditValue = null;

            xulybutton();
            XulyButton1();
        }
        #endregion

        #region tb Thân nhân
        void load_grv(string IDNguoiCoCong)
        {
            iq = QueryMgr.GetDbInstance();
            dt = new DataTable();
            dt = Cl_Convert.ToDataTable(iq.TNNCC_GetThanNhan_NguoiCoCongByNguoiCoCongID(IDNguoiCoCong));
            gridControl2.DataSource = dt;
        }

        private void bt1_saveall_Click(object sender, EventArgs e)
        {
            iq = QueryMgr.GetDbInstance();
            if (_NewThannhan == true)
            {
                if (BatLoi_Thannhan())
                {
                    iq.Tnncc_NewThanNhan_NguoiCoCong(Fill_Thannhan(0));
                    MessageBox.Show("Thêm 1 thành viên thành công");
                }

            }
            else
            {
                if (BatLoi_Thannhan())
                {
                    iq.Tnncc_EditThanNhan_NguoiCoCong(Fill_Thannhan(IDThanhVien));
                    MessageBox.Show("Thay đổi thông tin 1 thành viên thành công");
                }
            }
            _NewThannhan = false;
            load_dgv(txt_ma.Text);
            XulyButton1();
        }

        bool BatLoi_Thannhan()
        {
            bool ok = true;
            cl_Lookupedit.BatLoi(txt_ma, "Chưa nhập mã NCC", ref ok);
            cl_Lookupedit.BatLoi(lk2_phuong, "Chưa chọn phường", ref ok);
            cl_Lookupedit.BatLoi(txt2_namsinh, "Chưa nhập năm sinh", ref ok);
            cl_Lookupedit.BatLoi(txt2_tenthanhvien, "Chưa nhập tên thành viên", ref ok);
            cl_Lookupedit.BatLoi(txt2_diachi, "Chưa nhập địa chỉ", ref ok);
            cl_Lookupedit.BatLoi(lk2_quanhevsnguoicc, "Chưa chọn quan hệ với người có công", ref ok);
            return ok;
        }

        private ThanNhan_NguoiCoCong Fill_Thannhan(int machitiet)
        {
            ThanNhan_NguoiCoCong gd = new ThanNhan_NguoiCoCong();
            gd.Ma_NguoiCoCong = txt_ma.Text;
            gd.Ma_QuanHeThanhVien = int.Parse(lk2_quanhevsnguoicc.EditValue.ToString());
            gd.Ten_ThanNhan = txt2_tenthanhvien.Text;
            gd.NamSinh = int.Parse(txt2_namsinh.Text);
            gd.IsDeleted = false;
            gd.Ma_Phuong = int.Parse(lk2_phuong.EditValue.ToString());
            gd.DiaChi_ChiTiet = txt2_diachi.Text;

            if (list_gioitinh.SelectedIndex == 0)
                gd.GioiTinh = true;
            else
                gd.GioiTinh = false;
            if (machitiet != 0)
            {
                gd.Ma_ThanNhan = machitiet;
            }

            return gd;

        }

        private void lk2_quan_EditValueChanged(object sender, EventArgs e)
        {
            try
            {
                int id = int.Parse(lk1_quan.EditValue.ToString());
                cl_Lookupedit.lucb_PhuongXa(ref lk2_phuong, id);
            }
            catch { }
        }

        private void bt1_them_Click(object sender, EventArgs e)
        {
            txt2_namsinh.Text = "";
            txt2_tenthanhvien.Text = "";
            txt2_diachi.Text = "";
            lk2_phuong.EditValue = null;
            lk2_quan.EditValue = null;
            lk2_quanhevsnguoicc.EditValue = null;
            list_gioitinh.SelectedIndex = 0;
            _NewThannhan = true;
            //load_dgv(_IDHoNgheo);
            XulyButton1();
        }

        void load_dgv(string IDNCC)
        {
            iq = QueryMgr.GetDbInstance();
            dt = new DataTable();
            dt = Cl_Convert.ToDataTable(iq.TNNCC_GetThanNhan_NguoiCoCongByNguoiCoCongID(IDNCC));
            gridControl2.DataSource = dt;
            if (dt.Rows.Count == 0)
            {
                _NewThannhan = true;
            }
            XulyButton1();
        }

        private void gridView2_FocusedRowChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e)
        {
            r = gridView2.GetDataRow(gridView2.FocusedRowHandle);
            //_NewThanhVien = true;
            if (r != null)
            {
                _NewThannhan = false;
                ThanNhan_NguoiCoCong gd = new ThanNhan_NguoiCoCong();
                int index = e.FocusedRowHandle;
                IDThanhVien = int.Parse(r["Ma_ThanNhan"].ToString());
                iq = QueryMgr.GetDbInstance();
                gd = iq.TNNCC_GetThanNhan_NguoiCoCongByID(IDThanhVien);

                txt2_diachi.Text = gd.DiaChi_ChiTiet;
                txt2_namsinh.Text = gd.NamSinh + "";
                txt2_tenthanhvien.EditValue = gd.Ten_ThanNhan;
                lk2_quanhevsnguoicc.EditValue = gd.Ma_QuanHeThanhVien;
                lk2_quan.EditValue = gd.PhuongXa.Ma_QuanHuyen;
                lk2_phuong.EditValue = gd.Ma_Phuong;

                string gioitinh = r["GioiTinh"].ToString();
                if (gioitinh == "True")
                {
                    list_gioitinh.SelectedIndex = 0;
                }
                else
                    list_gioitinh.SelectedIndex = 1;
            }
        }
        #endregion
       
        private void load_tab_deail()
        {
            load_dataedit();
            if (MaNguoiCoCong != null)
            {
                load_grv(MaNguoiCoCong);
            }
        }

        void load_dataedit()
        {
            cl_grvLookupedit.rpcb_Quanhechuho(ref rplk_qhNCC);
            cl_Lookupedit.lucb_Quanhechuho(ref lk2_quanhevsnguoicc);
            cl_Lookupedit.Lucb_Quanhuyen(ref lk1_quan);
            cl_Lookupedit.lucb_MucDoDieuDuong(ref lk_mdd);

            repositoryItemImageComboBox1.Items.Clear();
            repositoryItemImageComboBox1.SmallImages = imageList1;
            repositoryItemImageComboBox1.Items.Add(new ImageComboBoxItem("Nam", true, 1));
            repositoryItemImageComboBox1.Items.Add(new ImageComboBoxItem("Nữ", false, 0));

            if (MaNguoiCoCong != null)
            {
                

                NguoiCoCong ncc = new NguoiCoCong();
                iq = QueryMgr.GetDbInstance();
                ncc = iq.NCC_GetNguoiCoCongByID(MaNguoiCoCong);

                txt_ma.Enabled = false;
                txt_ma.Text = ncc.Ma_NguoiCoCong;
                txt_Hoten.Text = ncc.Ten_NguoiCoCong;
                txt_namsinh.Text = ncc.NamSinh.ToString() ;
                txt_diachi.Text = ncc.DiaChiChiTiet;

                if (ncc.GioiTinh == true)
                    list_gioitinh.SelectedValue = 0;
                else
                    list_gioitinh.SelectedValue = 1;

                lk_mdd.EditValue = ncc.DoiTuongCoCong.Ma_MucDieuDuong;
                lk1_quan.EditValue = ncc.PhuongXa.Ma_QuanHuyen;
                
                lk1_phuong.EditValue = ncc.PhuongXa.Ma_Phuong;
                lk_ncc.EditValue = ncc.DoiTuongCoCong.Ma_DoiTuongCoCong;

                _NewNCC = false;
                xulybutton();
                load_dgv(txt_ma.Text);
            }
            

        }
        DataRow r;

        private void lk_ncc_EditValueChanged(object sender, EventArgs e)
        {

        }

        private void bt_del_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("Bạn muốn xóa người có công này?", "Thực hiên chức năng xóa",
                    MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
            {
                iq = QueryMgr.GetDbInstance();
                if (iq.NCC_GetNguoiCoCongByID(txt_ma.Text) != null)
                {
                    iq.Ncc_DelOrResNguoiCoCong(txt_ma.Text);
                    MessageBox.Show("Xóa hộ nghèo : " + txt_ma.Text + " Thành công");
                }
                xtraTab_detail.PageVisible = false;
                xtraTab_search.PageVisible = true;
                bt_cancel_Click(sender, e);
            }
        }

        private void bt1_xoa_Click(object sender, EventArgs e)
        {
            try
            {
                iq = QueryMgr.GetDbInstance();
                if (MessageBox.Show("Bạn muốn xóa thành viên này?", "Thực hiên chức năng xóa",
                    MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                {
                    int ID = int.Parse(gridView2.GetFocusedRowCellValue("Ma_ThanNhan").ToString());
                    iq.Tnncc_DelOrResThanNhan_NguoiCoCong(ID);
                    MessageBox.Show("Xóa thành viên thành công");
                    _NewThannhan = false;
                    load_dgv(txt_ma.Text);
                    XulyButton1();
                }
            }
            catch { }
        }

        private void xtraTabControl1_Click(object sender, EventArgs e)
        {

        }
    }
}
